﻿using System;
using System.Collections.Generic;

namespace try的练习
{
    class Program
    {
        static void Main(string[] args)
        {
            //一个考试管理系统，需要录入考生成绩，只能录入数字，否则会报类型转换异常。
            //请编写相关代码，
            //1、捕获FormatException异常，并打印输出“异常已处理；
            //2、捕获OverflowException异常，数值超出double范围的异常，并打印输出“异常已处理；
            //3、捕获一般异常Exception异常。
            //4、最终处理finally
            //录入成绩结束后，请输出，总学生数，总分数，平均分。
            List<double> score = new List<double>();
            int sum = 0;
            while (true)
            {
                Console.WriteLine("请输入学生成绩");
                try
                {
                    double inputScore = double.Parse(Console.ReadLine());
                    
                    if (!(inputScore>0 && inputScore<=150))
                    {
                        throw new OverflowException();
                    }
                    else
                    {
                        score.Add(inputScore);
                        Console.WriteLine("添加成功");
                    }
                }
                catch (FormatException fe)
                {
                    Console.WriteLine("异常已处理");
                    Console.WriteLine(fe.Message);
                    Console.WriteLine(fe.Data);
                    Console.WriteLine(fe.Source);
                    continue;
                }

                catch (Exception e)
                {
                    Console.WriteLine("异常已处理");
                    Console.WriteLine(e.Message);
                    Console.WriteLine(e.Data);
                    Console.WriteLine(e.Source);
                    continue;

                }
                finally
                {
                    Console.WriteLine("该学生成绩添加完成");

                }
                Console.WriteLine("请问是否还要添加成绩  Y/N");
                String yesOrNo = Console.ReadLine();
                if (yesOrNo.Equals("y", StringComparison.OrdinalIgnoreCase))
                {
                    continue;
                }
                else
                {
                    Console.WriteLine("退出");
                    break;
                }
            }

            foreach (int multScore in score)
            {
                sum += multScore;
            }
            int count=1;
            foreach (int item in score)
            {
                Console.WriteLine("第{1}位学生成绩{0}",item,count);
                count++;
            }
            double avg = sum / score.Count;
            Console.WriteLine("总学生数{0}",score.Count);
            Console.WriteLine("总分数{0}",sum);
            Console.WriteLine("平均分{0}",avg);

            Console.ReadKey();

        }
    }

}
